package helper

// Example: If(10 > 11 , "是","否")
// Test 直接根据传入的条件、真分支值、假分支值评估并返回三目表达式的值
func If[T any](condition bool, trueValue T, falseValue T) T {
	ternary := &TernaryExpression[T]{
		condition:  condition,
		trueValue:  trueValue,
		falseValue: falseValue,
	}
	return ternary.Evaluate()
}

// TernaryExpression 结构体用于模拟三目运算的条件判断及取值部分
type TernaryExpression[T any] struct {
	condition  bool
	trueValue  T
	falseValue T
}

// Evaluate 根据条件判断返回相应的值
func (t TernaryExpression[T]) Evaluate() T {
	if t.condition {
		return t.trueValue
	}
	return t.falseValue
}
